package com.xctech.yace;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.*;

/**
 * 版本信息
 * @author marshall
 * @date 20230315
 */
@AllArgsConstructor
public enum VersionRegister {
    V2023020001("202302.1", "   feat：初始版本"),
    V2023030001("202303.1", "   feat：更改字体模拟tab的字体为楷体,更改压测字体为幼圆,更改字号大小"),
    V2023030002("202303.2", "   add：增加版本说明及操作说明显示页"),
    V2023030003("202303.3", "   feat：修复测试捞取数据最后一条数据为null展示及发送报错缺陷"),
    V2023030004("202303.4", "   add：扩展之前的从kafka抓取数据的功能移植前台界面,增加多条件抓取," +
            "1.升级注意：增加lib增加时间控件datepicker.jar" +
            "2.操作说明显示页为conf/下的update.yml,将之前的txt后缀改成yml" +
            "3.原来配置文件的kafkaconsumer.propties的mode=-2模式废除" +
            "4.勾选生成搜寻结果数据落文件, 数据文件会保留至conf/result下,原始信息为主题_日期.txt,此文件是追加写" +
            "   还有一个文件是测试案例_时间戳#主题.sql 这个可直接用做测试案例进行测试,无需像之前手动修改,同时该文件支持hvr双json模式"),
    V2023030005("202303.5", "   feat：1.修复hvr格式合并模式 *******分隔展示问题;2.result落文件的时候,文件名的时间字段按点击时生成的时间生成"),
    V2023050001("202305.1", "   feat：(汇添富)挑选收集i2英方的数据格式,开关按钮-选择db按钮,将指定条件字段数据insert到对应的表中"),
    V2023080001("202308.1", "   feat：(汇添富)交易密码加解密转换"),
    V2024080001("202408.1", "   feat：add kafka-sasl认证"),
    ;

    @Getter
    private String versionID;

    @Getter
    private String info;


    private static final Vector<String> versionInfos = new Vector<>();

    private static final Vector<String> versionInfoss = new Vector<>();

    static {
        for(VersionRegister version: EnumSet.allOf(VersionRegister.class)){
            versionInfos.add(version.getInfo());
            versionInfos.add("V:["+version.getVersionID()+"] ");
            versionInfoss.add("["+version.getVersionID()+"]"+version.getInfo());
        }
    }

    public static String getLastVersionInfo(){
        return versionInfoss.lastElement();
    }

    public static Vector<String> getVersionInfos(int len){
        Vector<String> res = new Vector<>();
        Collections.reverse(versionInfos);
        for (String info:versionInfos){
            if(info.length() <= len){
                if(info.startsWith("V:[")){
                    res.add("\n");
                }
                res.add(info);
            }else {
                while (info.length() > len){
                    String substring = info.substring(0, len);
                    res.add(substring);
                    info = info.substring(len);
                }
                res.add(info);
            }
        }
        return res;
    }

}
